<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui">
<h:head>

	<style type="text/css">
.ui-layout-north {
	z-index: 20 !important;
	overflow: visible !important;;
}

.ui-layout-north .ui-layout-unit-content {
	overflow: visible !important;
}

.ui-widget {
	font-size: 10px !important;
}

.size {
	width: 650px;
	position: relative;
	left: 26%;
	top: 10%;
}

.tabela {
	width: 750px;
}
</style>

	<title>Cadastro de Funcionario</title>
</h:head>

<h:body>
	<ui:decorate template="/templateBase.xhtml">
		<ui:define name="center">
			<p:growl id="msgNot" life="3000" autoUpdate="true" />
			<h:form prependId="false" id="formCadastro">
				<br />
				<br />
				<p:panel header="Cadastro de Funcionário" styleClass="size"
					footer="SIGLAS - Sistema de Gerenciamento de Laboratório de Análise de Solo">
					<p:tabView>
						<br />
						<!-- Aba de dados pessoais  -->
						<p:tab title="Dados Pessoais">

							<h:panelGrid columns="3" id="pn1">
								<h:outputText value="Nome:(*) " />
								<p:inputText
									value="#{funcionarioBacking.funcionarioSalvar.pessoa.nome}"
									size="50" required="true" requiredMessage="Nome obrigatorio" />

								<p:commandButton icon="ui-icon-search" oncomplete="dlg.show()"
									actionListener="#{funcionarioBacking.carregarTodosFuncionarios}"
									update=":formPesquisa:tabelaFuncionario" upprocess="@all"
									immediate="true" />

							</h:panelGrid>

							<h:panelGrid columns="2" id="pn2">

								<h:outputText value="CPF:(*)" id="txtCpf" />
								<p:inputMask id="cpf"
									value="#{funcionarioBacking.funcionarioSalvar.pessoa.cpf_cnpj}"
									mask="999.999.999-99" required="true"
									requiredMessage="CPF obrigatorio">
									<f:validator validatorId="validador.CPFValidator" />

									<p:ajax event="blur" update=":formCadastro"
										process="pn1, pn2, pn3, pn4"
										listener="#{funcionarioBacking.carregarPessoa}" />
								</p:inputMask>

								<h:outputText value="Data Nascimento:(*)" />
								<p:calendar locale="pt_BR" id="dataNascmimento"
									mask="99/99/9999" navigator="true" display="inline"
									pattern="dd/MM/yyyy" yearRange="c-90"
									value="#{funcionarioBacking.funcionarioSalvar.pessoa.dataNascimento}" />

								<h:outputText value="Data Admissão:(*)" />
								<p:calendar id="dataAdmissao" mask="99/99/9999"
									pattern="dd/MM/yyyy" locale="pt_BR"
									value="#{funcionarioBacking.funcionarioSalvar.dataAdmissao}" />

								<h:outputText value="Data Demissao:" />
								<p:calendar id="dataDemissao" mask="99/99/9999"
									pattern="dd/MM/yyyy" locale="pt_BR"
									value="#{funcionarioBacking.funcionarioSalvar.dataDemissao}" />

								<h:outputText value="Telefone:" />
								<p:inputMask mask="(99)9999-9999"
									value="#{funcionarioBacking.funcionarioSalvar.pessoa.telefone}" />


								<h:outputText value="E-mail:" />
								<p:inputText
									value="#{funcionarioBacking.funcionarioSalvar.pessoa.email}" />
							</h:panelGrid>
							<br />
						</p:tab>

						<!-- ABA ENDEREÇO -->
						<p:tab title="Endereço" effect="fade" effectDuration="fast">
							<h:panelGrid columns="4" id="pn3">

								<h:outputText value="Logradouro:(*)" />
								<p:inputText
									value="#{funcionarioBacking.funcionarioSalvar.pessoa.endereco.logadouro}"
									size="52" />

								<h:outputText value="Nº:" />
								<p:inputText
									value="#{funcionarioBacking.funcionarioSalvar.pessoa.endereco.numero}"
									size="5" />

							</h:panelGrid>
							<h:panelGrid columns="2" id="pn4">
								<h:outputText value="Complemento:" />
								<p:inputText
									value="#{funcionarioBacking.funcionarioSalvar.pessoa.endereco.complemento}"
									size="50" />

								<h:outputText value="Estado:(*)" />
								<p:selectOneMenu effect="drop" id="estado" height="300"
									value="#{funcionarioBacking.estadoSalvar}">
									<f:selectItem itemLabel="Selecione um Estado" />
									<f:selectItems value="#{funcionarioBacking.listaEstados}"
										var="e" itemValue="#{e.codigo}"
										itemLabel="#{e.nome} - #{e.sigla}" />
									<p:ajax listener="#{funcionarioBacking.carregarCidades}"
										process="pn4" update="cidade" />
								</p:selectOneMenu>

								<h:outputText value="Cidade:(*)" />

								<p:selectOneMenu effect="drop" id="cidade"
									value="#{funcionarioBacking.cidadeSalvar}">
									<f:selectItem itemLabel="Selecione uma Cidade" />
									<f:selectItems value="#{funcionarioBacking.listaCidades}"
										var="cid" itemLabel="#{cid.nome}" itemValue="#{cid.codigo}" />
								</p:selectOneMenu>

								<h:outputText value="Bairro:" />
								<p:inputText
									value="#{funcionarioBacking.funcionarioSalvar.pessoa.endereco.bairro}" />

								<h:outputText value="CEP:" />
								<p:inputMask mask="99.999-999"
									value="#{funcionarioBacking.funcionarioSalvar.pessoa.endereco.cep}" />
								<br />
							</h:panelGrid>
						</p:tab>

						<!-- ABA LOGIN -->
						<p:tab title="Permissão de Acesso">
							<p:tabView>
								<p:tab title="Laboratório">
									<h:panelGrid columns="2" id="pn6">
										<h:outputText value="Laboratório:(*)" />

										<p:selectOneMenu effect="drop" id="laboratorio"
											value="#{funcionarioBacking.codigoLaboratorioSalvar}">
											<f:selectItem itemLabel="Escolha um Laboratório" />
											<f:selectItems value="#{funcionarioBacking.listaLaboratorio}"
												var="l" itemValue="#{l.codigo}" itemLabel="#{l.descricao}" />
										</p:selectOneMenu>

										<h:outputText value="Cargo:(*)" />
										<p:selectOneMenu effect="drop" id="cargo"
											value="#{funcionarioBacking.codigoCargoSalvar}">
											<f:selectItem itemLabel="Escolha um Cargo" />
											<f:selectItems value="#{funcionarioBacking.listaCargos}"
												var="c" itemValue="#{c.codigo}" itemLabel="#{c.descricao}" />
											<p:ajax listener="#{funcionarioBacking.verificaCrea}"
												process="cargo" update="pn6" />
										</p:selectOneMenu>

										<h:outputText value="CREA: " id="txtCrea"
											rendered="#{funcionarioBacking.isEngenheiro}" />
										<p:inputText size="10" maxlength="10" id="crea"
											rendered="#{funcionarioBacking.isEngenheiro}"
											value="#{funcionarioBacking.funcionarioSalvar.crea}" />
									</h:panelGrid>
								</p:tab>
								<p:tab title="Usuário">
									<h:panelGrid columns="2">
										<h:outputText value="Usuário:(*)" />
										<p:inputText id="user"
											value="#{funcionarioBacking.funcionarioSalvar.pessoa.usuario.usuario}">
											<p:ajax event="blur" update="user" />

										</p:inputText>

										<h:outputText value="Senha:(*)" />
										<p:password id="pw"
											value="#{funcionarioBacking.funcionarioSalvar.pessoa.usuario.senha}"
											feedback="true" promptLabel="Digite sua Senha"
											weakLabel="Senha Fraca" goodLabel="Senha Média"
											strongLabel="Senha Forte" redisplay="true" match="pw2"
											validatorMessage="SENHAS DIFERENTES" />
										<h:outputText value="Confirmar Senha:(*)" />

										<p:password id="pw2" feedback="false" redisplay="true"
											value="#{funcionarioBacking.senhaConfirmarSalvar}" />

									</h:panelGrid>
								</p:tab>
								<p:tab title="Perfil de Acesso">
									<h:panelGrid>
										<h:outputText value="O que o Funcionário podera acessar?:(*)" />
									</h:panelGrid>

									<h:panelGrid columns="1">
										<p:pickList id="listfuncionalidades"
											converter="funcionalidadeConverter"
											value="#{funcionarioBacking.listaFuncionalidades}"
											var="funcionalidade" effect="bounce" iconOnly="true"
											itemLabel="#{funcionalidade.descricao}"
											itemValue="#{funcionalidade}" addAllLabel="Adicionar Todos"
											addLabel="Adicionar" removeAllLabel="Remover Todos"
											removeLabel="Remover">
											<f:facet name="sourceCaption">Todas Funcionalidades</f:facet>
											<f:facet name="targetCaption">Funcionalidades Selecionadas</f:facet>
										</p:pickList>

									</h:panelGrid>
								</p:tab>
							</p:tabView>
						</p:tab>

						<p:tab title="Foto">

							<div align="center">
								<h:panelGrid columns="2">
									<p:photoCam widgetVar="pc" update="fotos" />
									<p:imageSwitch effect="zoom" id="fotos">
										<ui:repeat var="ft">
											<p:graphicImage value="/photocam/#{ft}.png" />
										</ui:repeat>
									</p:imageSwitch>
								</h:panelGrid>
							</div>
							<br />
							<div align="center">
								<h:panelGrid columns="1">

									<p:commandButton value="Capturar" onclick="pc.capture()"
										type="button" />
								</h:panelGrid>
							</div>
						</p:tab>
					</p:tabView>
					<hr />
					<div align="center">
						<h:panelGrid columns="2">
							<p:commandButton value="Salvar"
								actionListener="#{funcionarioBacking.salvar}"
								update=":formCadastro" />
							<p:commandButton value="Cancelar"
								actionListener="#{funcionarioBacking.reset}" update="@all" />
						</h:panelGrid>
					</div>

				</p:panel>
			</h:form>

			<!-- PESQUISAR FUNCIONARIO -->
			<h:form prependId="false" id="formPesquisa">
				<p:dialog id="pesquisaFuncionario" widgetVar="dlg"
					header="Pesquisar Funcionários" closable="true" height="400"
					width="600" resizable="false" showEffect="clip" hideEffect="clip">

					<p:dataTable var="f" id="tabelaFuncionario"
						value="#{funcionarioBacking.listaFuncionarios}" rows="10"
						widgetVar="funcionarioTabela" paginator="true"
						emptyMessage="Nenhum registro foi encontrado, tente novamente!">
						<h:outputText value="Funcionários Cadastrados" />
						<p:column filterBy="#{f.pessoa.nome}">

							<f:facet name="header">
								<h3>
									<h:outputText value="Nome" />
								</h3>
							</f:facet>
							<h:outputText value="#{f.pessoa.nome}" />
						</p:column>


						<p:column filterBy="#{f.pessoa.cpf_cnpj}">
							<div align="center">
								<f:facet name="header">
									<h3>
										<h:outputText value="CPF / CNPJ" />
									</h3>
								</f:facet>

								<h:outputText value="#{f.pessoa.cpf_cnpj}" />
							</div>
						</p:column>

						<p:column filterBy="#{f.pessoa.dataNascimento}">
							<div align="center">
								<f:facet name="header">
									<h3>
										<h:outputText value="Data Nascimento" />
									</h3>
								</f:facet>
								<h:outputText value="#{f.pessoa.getDataNascimentoFormatada()}" />
							</div>
						</p:column>

						<p:column>
							<f:facet name="header">
								<h3>
									<h:outputText value="Ações" />
								</h3>
							</f:facet>
							<div align="center">
								<h:panelGrid columns="2">

									<p:commandButton icon="ui-icon-pencil" onclick="dlg.hide()"
										update=":formCadastro"
										action="#{funcionarioBacking.preparaAlteracao}" ajax="false">
										<f:setPropertyActionListener
											target="#{funcionarioBacking.funcionarioSelecionado}"
											value="#{f}" />
									</p:commandButton>


									<p:commandButton icon="ui-icon-close"
										onclick="dlgDelete.show()">
										<f:setPropertyActionListener
											target="#{funcionarioBacking.funcionarioSelecionado}"
											value="#{f}" />
									</p:commandButton>

								</h:panelGrid>
							</div>
						</p:column>

					</p:dataTable>
				</p:dialog>
				<p:dialog id="confirmaDelete" widgetVar="dlgDelete"
					header="Deletar Registro" closable="true" width="230"
					resizable="false" showEffect="clip" hideEffect="clip">
					<div align="center">
						<h:outputText value="Deseja realmente excluir esse registro?" />
						<h:panelGrid columns="2">
							<p:commandButton value="Sim" onsuccess="dlgDelete.hide()"
								actionListener="#{funcionarioBacking.delete}"
								update=":formPesquisa:tabelaFuncionario,:formCadastro"
								process="@all" immediate="true" />
							<p:commandButton value="Não" onclick="dlgDelete.hide()" />
						</h:panelGrid>
					</div>
				</p:dialog>

			</h:form>
		</ui:define>
	</ui:decorate>
</h:body>
</html>